export function InitLocation() {
	uni.startLocationUpdate({
		success,
		fail,
		complete: msg => console.log('调用开启小程序接收位置消息 API 完成')
	});


}

export function GetLocation(func){
	uni.getLocation({
		success:(e)=>{
			func(e);
		},
		fail:(e)=>{
			func(null);
			fail(e);
		},
		complete: msg => console.log('GetLocation API 完成')
	})
}

function success(res) {
	console.log('开启小程序接收位置消息成功', res);
}

function fail(err) {
	console.log('开启小程序接收位置消息失败：', err);
	wx.getSetting({
		success: function(res) {
			console.log(res)
			if (!res.authSetting['scope.userLocation']) {
				ShowTipsModal('请允许小程序使用时获取您的位置');
			} else {
				//用户已授权，但是获取地理位置失败，提示用户去系统设置中打开定位
				uni.showModal({
					title: '',
					content: '请在系统设置中打开定位服务',
					confirmText: '确定',
					success: function(res) {}
				})
			}
		}
	})


}


function ShowTipsModal(e) {
	wx.showModal({
		title: '提示',
		confirmText: '去设置',
		showCancel: false,
		content: e,
		success: function({
			confirm
		}) {
			if (confirm) {
				console.log('点击了弹窗去设置按钮-> 可发起下一步流程')
				// 跳转至原生设置页
				OpenLocationSetting();
			}
		}
	})
}

function OpenLocationSetting() {
	const setting = 'scope.userLocation'
	wx.openSetting({
		success(res) {
			console.log('原生设置页回调->', res)
			const {
				authSetting
			} = res || {}
			// 已开启位置授权
			if (authSetting.hasOwnProperty(setting) && authSetting[setting]) {
				console.log('已成功开启位置服务->But这里没有返回任何位置信息相关信息')
				// 再次手动获取用户位置信息
			}
		},
		fail() {
			uni.showToast({
				title: '获取位置信息失败，按“右上菜单 - 关于\n - 右上菜单 - 设置 - 位置信息”授权',
				icon: 'none'
			});
		}
	})
}

var isshow = false; //限定每次定位弹窗只出一次
export function OnLocationChange(func) {

	uni.onLocationChangeError(res => {
		console.log(res)
		if (isshow) return;
		isshow = true;
		if (res.errStr === 'ERROR_NOCELL&WIFI_LOCATIONSWITCHOFF' ||
			res.errStr === 'fail system permission denied' ||
			res.errStr === 'fail:system permission denied') {
			//用户已授权，但是获取地理位置失败，提示用户去系统设置中打开定位
			console.log('------', isshow)
			uni.showModal({
				title: '',
				content: '请在系统设置中打开定位服务并重启小程序',
				showCancel: false,
				confirmText: '确定',
				success: function(res) {
					if (res.confirm) {
						isshow = false;
					}
				}
			})
			func(null);




		}
	});
	uni.onLocationChange(func);
}

export function OffLocationChange() {
	uni.offLocationChange();
	uni.offLocationChangeError();
}